ホスト型IDSのOSSECをEC2に導入する
はじめに
IDSとは
IDSはInstrusion Detection Systemの略称であり、日本語では「侵入検知システム」と呼ばれます。
IDSは大きくネットワーク型(Network IDS/NIDS)とホスト型IDS(Host IDS/HIDS)に分類されます。両者とも、検知した際にアラートを表示・記録・通知を行うことで管理者が迅速な対応を行えることを目的としています。
ネットワーク型はネットワークパケットを監視してルールベースのパターンマッチングや異常通信検出を行い、不正アクセスや悪意ある通信と思われるパケットを検知します。また検知と同時に通信の遮断も行えるものがあり、一般的にIDPやIPS(Intrusion Detection and Protection System)と呼ばれます。現在Firewallなどのネットワーク機器に組み込まれたIDPはProtectionの機能を備えたものが主流です(例えばFortigateやSophos、SonicWallなど)。ネットワーク型IDSとして代表的なものにSnortがあります。商用製品としては、以前はインターネット・セキュリティ・システムズ(ISS)社のRealSecure Network Sensorが超メジャー製品でした。
ホスト型はサーバ上のI/Oを監視し、不正アクセスと思われる行為を検知します。検知手法としてはシステムログの監視や、ある瞬間のファイルスナップショットとの差異を確認することによる改ざん検知などがあります。ホスト型IDSとして代表的なものにtripwire、inotify(ionotify-tools)、aide、そして今回導入するOSSECなどがあります。
OSSECについて
OSSECはGPL v2ライセンスにて配布されているオープンソース・ソフトウェアであり、ホスト型IDSです。サーバとエージェントで構成されており、サーバにてアラートの一元管理を行うことが可能です。マルチプラットフォームに対応しており、監視項目もログ監視、ファイル整合性チェック、Windowsレジストリ監視、rootkitの検出などの機能を有しています。
今回はこのOSSECをEC2(Amazon Linux)に導入してみました。
やってみた
事前設定
OSSECはサーバとエージェントに分かれ、エージェントからサーバに対し1514/udpでデータが送信されます。またサーバはWeb-UIを用いて管理するため、管理者からサーバ用EC2に80/tcpで接続可能なよう、Security Groupを設定しておきます。
OSSECサーバの導入
OSSECのインストール
OSSECのインストールに必要なgccをインストールしておきます。
$ sudo yum install gcc
OSSECのgithubページに書いてある通り、以下のインストールコマンドを実行します。
$ (cd /tmp/ && wget https://github.com/ossec/ossec-hids/archive/2.8.1.tar.gz && mv 2.8.1.tar.gz ossec-hids-2.8.1.tar.gz && tar xfz ossec-hids-2.8.1.tar.gz && cd ossec-hids-2.8.1 && sudo ./install.sh )
インストール言語の選択が表示されます。今回は日本語なので"jp"を入力。
(en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: jp
インストールが開始されます。インストール種類の選択で"server"を選択します。
1- どの種類のインストールを選択しますか (server,agent,local または help)? server
インストール先ディレクトリはデフォルトのまま。
2- インストール環境を設定しています. - OSSEC HIDS のインストール先を選択してください [/var/ossec]: - インストール先を以下に作成します /var/ossec .
各種設定を行います。今回は検知のみでメール通知はせず、またアクティブレスポンスも有効にしていません。
3- 設定 OSSEC HIDS. 3.1- メール通知を希望しますか? (y/n) [y]: n 3.2- 整合性検査を行うデーモンを実行させますか? (y/n) [y]: y - syscheck (整合性検査デーモン) を実行させます. 3.3- rootkit 検知エンジンを実行させますか? (y/n) [y]: y - rootcheck (rootkit 検知) を実行させます. 3.4- アクティブレスポンスによりイベントが発生した際に特定の コマンドを実行することができます. 例えば,ある IP アドレスを遮断することや特定のユーザ に対してアクセスを無効にすることができます. 詳細な情報は以下にあります: http://www.ossec.net/en/manual.html#active-response - アクティブレスポンスを有効にしますか? (y/n) [y]: n - アクティブレスポンスを無効にしました. 3.5- リモート syslog (port 514 udp) を有効にしますか? (y/n) [y]: y - リモート syslog を有効にしました. 3.6- 以下のログを解析するための設定を準備しています: -- /var/log/messages -- /var/log/secure -- /var/log/maillog - 他のファイルを監視したい場合は,ossec.conf を変更し 新しいエントリーを追加してください. 設定に関するどんな質問にも我々の Web サイト http://www.ossec.net を訪れることで答えることができます. --- 続けるには ENTER を押してください ---
ENTERキーを押下するとインストールが開始され、完了します。 では早速起動してみましょう。
$ sudo /var/ossec/bin/ossec-control start Starting OSSEC HIDS v2.8 (by Trend Micro Inc.)... 2015/06/17 07:36:37 ossec-maild: INFO: E-Mail notification disabled. Clean Exit. Started ossec-maild... Started ossec-execd... Started ossec-analysisd... Started ossec-logcollector... Started ossec-remoted... Started ossec-syscheckd... Started ossec-monitord... Completed.
OSSEC Web-UIのインストール
まず普通にApacheをインストールします。
$ sudo yum install httpd php $ sudo chkconfig httpd on
OSSEC Web-UIをgitコマンドを使ってダウンロードします。
$ sudo yum install git $ git clone https://github.com/ossec/ossec-wui.git
ダウンドードしたソースをWeb公開フォルダに移動させ、セットアップスクリプトを実行します。
$ sudo mv ossec-wui /var/www/html/ossec $ cd /var/www/html/ossec/ $ sudo ./setup.sh Setting up ossec ui...
BASIC認証用のユーザーとパスワードを登録します。
Username: admin New password: Re-type new password: Adding password for user admin
Apacheの実行ユーザーを設定します(ここでは"apache"と設定しています)
Enter your web server user name (e.g. apache, www, nobody, www-data, ...) apache
OSSECのインストールディレクトリを指定します。
Enter your OSSEC install directory path (e.g. /var/ossec) /var/ossec You must restart your web server after this setup is done. Setup completed successfuly.
ossecグループにapacheグループを追加します。
$ sudo gpasswd -a apache ossec
OSSECのテンポラリディレクトリをWeb-UI用に権限変更します。
$ sudo chmod 770 /var/ossec/tmp $ sudo chgrp apache /var/ossec/tmp
で、Apacheを起動!
$ sudo service httpd start Starting httpd: [ OK ]
Webブラウザからhttp://OSSECサーバのIPアドレス/ossec/index.php」にアクセスするとOSSEC Web-UIが表示されます!
OSSECエージェントの導入
OSSECサーバで鍵を発行する
OSSECエージェントがOSSECサーバと通信するためには、サーバで発行された鍵をエージェント側に設定する必要があります。以下のコマンドをOSSECサーバで実行します。以下のようにエージェントの名前とIPアドレスを指定して登録します。
$ sudo /var/ossec/bin/manage_agents **************************************** * OSSEC HIDS v2.8 Agent manager. * * The following options are available: * **************************************** (A)dd an agent (A). (E)xtract key for an agent (E). (L)ist already added agents (L). (R)emove an agent (R). (Q)uit. Choose your action: A,E,L,R or Q: A - Adding a new agent (use '\q' to return to the main menu). Please provide the following: * A name for the new agent: agent1 * The IP Address of the new agent: 172.31.14.208 * An ID for the new agent[001]: Agent information: ID:001 Name:agent1 IP Address:172.31.14.208 Confirm adding it?(y/n): y Agent added.
そしてそのエージェント用の鍵を発行します。
**************************************** * OSSEC HIDS v2.8 Agent manager. * * The following options are available: * **************************************** (A)dd an agent (A). (E)xtract key for an agent (E). (L)ist already added agents (L). (R)emove an agent (R). (Q)uit. Choose your action: A,E,L,R or Q: e Available agents: ID: 001, Name: agent1, IP: 172.31.14.208 Provide the ID of the agent to extract the key (or '\q' to quit): 001 Agent key information for '001' is: MDAxIGFnZW50MSAxNzIuMzEuMTQuMjA4IGE1Nzg5ZTA5OGZiNTI4NGE0N2JmYzFhYzg2NWJkYzA1MGE3NjdjMTk2NGI4NDc3NThlYTEwYTJmMjliYzRlOTY= ** Press ENTER to return to the main menu.
OSSECのインストール
OSSECサーバと同様、OSSECのインストールに必要なgccをインストールしておきます。
$ sudo yum install gcc
OSSECサーバと同じインストールコマンドを実行します。
$ (cd /tmp/ && wget https://github.com/ossec/ossec-hids/archive/2.8.1.tar.gz && mv 2.8.1.tar.gz ossec-hids-2.8.1.tar.gz && tar xfz ossec-hids-2.8.1.tar.gz && cd ossec-hids-2.8.1 && sudo ./install.sh )
インストール言語の選択が表示されます。今回は日本語なので"jp"を入力。
(en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: jp
インストールが開始されます。インストール種類の選択で"agent"を選択します。
1- どの種類のインストールを選択しますか (server,agent,local または help)? angent - Agent(client) インストールを選択しました.
インストール先ディレクトリはデフォルトのまま。
2- インストール環境を設定しています. - OSSEC HIDS のインストール先を選択してください [/var/ossec]: - インストール先を以下に作成します /var/ossec .
各種設定を行います。エージェントが繋がるサーバのIPアドレスを設定します。
3- 設定 OSSEC HIDS. 3.1- OSSEC HIDS サーバの IP/hostname アドレスは何ですか?: 172.31.6.199 - サーバの IP を加えています 172.31.6.199 3.2- 整合性検査を行うデーモンを実行させますか? (y/n) [y]: - syscheck (整合性検査デーモン) を実行させます. 3.3- rootkit 検知エンジンを実行させますか? (y/n) [y]: - rootcheck (rootkit 検知) を実行させます. 3.4 - アクティブレスポンスを有効にしますか? (y/n) [y]: n - アクティブレスポンスを無効にしました. 3.5- 以下のログを解析するための設定を準備しています: -- /var/log/messages -- /var/log/secure -- /var/log/maillog -- /var/log/httpd/error_log (apache log) -- /var/log/httpd/access_log (apache log) - 他のファイルを監視したい場合は,ossec.conf を変更し 新しいエントリーを追加してください. 設定に関するどんな質問にも我々の Web サイト http://www.ossec.net を訪れることで答えることができます. --- 続けるには ENTER を押してください ---
ENTERキーを押すとインストールが進行し、完了します。
OSSECエージェントの設定
以下コマンドを実行し、OSSECエージェントの設定を行います。先ほどOSSECサーバで発行した鍵を登録します。
$ sudo /var/ossec/bin/manage_agents **************************************** * OSSEC HIDS v2.8 Agent manager. * * The following options are available: * **************************************** (I)mport key from the server (I). (Q)uit. Choose your action: I or Q: I * Provide the Key generated by the server. * The best approach is to cut and paste it. *** OBS: Do not include spaces or new lines. Paste it here (or '\q' to quit): MDAxIGFnZW50MSAxNzIuMzEuMTQuMjA4IGE1Nzg5ZTA5OGZiNTI4NGE0N2JmYzFhYzg2NWJkYzA1MGE3NjdjMTk2NGI4NDc3NThlYTEwYTJmMjliYzRlOTY= Agent information: ID:001 Name:agent1 IP Address:172.31.14.208 Confirm adding it?(y/n): y Added. ** Press ENTER to return to the main menu.
そして起動!
$ sudo /var/ossec/bin/ossec-control start Starting OSSEC HIDS v2.8 (by Trend Micro Inc.)... Started ossec-execd... 2015/06/17 16:55:23 ossec-agentd: INFO: Using notify time: 600 and max time to reconnect: 1800 Started ossec-agentd... Started ossec-logcollector... Started ossec-syscheckd... Completed.
するとOSSEC Web-UIで見ると、以下のようにエージェントが追加されているのがわかります。
さいごに
今回はインストールと検知までしかしていませんが、検知からのメール通知や独自ルールの適用、アクティブレスポンスによる自動ブロックなど、幅広い機能があります。今度はその辺を試してみたいと思います。